package com.augurit.common.util.lang;

import java.util.ArrayList;
import java.util.List;

/**
 * 提供数组方面的工具方法
 */
public class ArrayUtils extends org.apache.commons.lang.ArrayUtils {

	/**
	 * 将字符串数组转换为长整型数组
	 * @param strArray
	 * @return
	 */
	public static Long[] convertToLongArray(String[] strArray){
		Long[] result = null;
		
		if(strArray != null && strArray.length > 0){
			result = new Long[strArray.length];
			for(int i=0; i<strArray.length; i++){
				result[i] = Long.valueOf(strArray[i]);
			}
		}
		
		return result;
	}
	
	public static boolean isExist(Long elem, Long[] array){
		if(array != null && array.length > 0){
			for(Long e : array){
				if(elem.longValue() == e.longValue() )
					return true;
			}
		}
		return false;
	}
	
	public static boolean isExist(String elem, String[] array){
		if(array != null && array.length > 0){
			for(String str : array){
				if(elem.equals(str))
					return true;
			}
		}
		return false;
	}
	
	/**
	 * 计算交集,即计算既属于array1又属于array2中的元素,
	 * 传参数时建议array1是含义元素较少的数组
	 * @param array1
	 * @param array2
	 * @return
	 */
	public static Long[] calIntersection(Long[] array1, Long[] array2){
		if(array1 != null && array2 != null){
			List<Long> result = new ArrayList<Long>();
			
			for(Long elem: array1){
				if(isExist(elem, array2))
					result.add(elem);
			}
			if(result.size() > 0)
				return CollectionUtils.toLongArray(result);
		}
		return null;
	}
	
	/**
	 * 计算差集，即计算属于array1但不属于array2的元素数组
	 * @param array1
	 * @param array2
	 * @return
	 */
	public static Long[] calDifference(Long[] array1, Long[] array2){
		
		if(array1 != null ){
			List<Long> result = new ArrayList<Long>();
			if(array2 == null){
				for(Long elem: array1){
					result.add(elem);
				}
			}
			else{
				for(Long elem: array1){
					if( !isExist(elem, array2) ){
						result.add(elem);
					}
				}
			}
			if( result.size() > 0)
				return CollectionUtils.toLongArray(result);
		}
		return null;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
